1. Field of the Invention
The present invention relates to a coordinator server and a plurality of database servers constituting a parallel database, and a pipeline processing control method performed by the parallel database.
2. Description of the Related Art
Conventionally, as a high speed technology of a processor that performs reading, interpretation, and execution of commands, and writing of results thereof, for example, there is a pipeline processing technology. Pipeline processing independently operates a process of each phase, in which before a processing cycle of a previous phase finishes, a process of the next phase is started, and this process is repeated. Accordingly, an assembly-line operation is realized and the performance of the entire processing is improved.
Meanwhile, there is a parallel database technology as a technique for managing a large amount of data. In the parallel database technology, a system including a plurality of servers is established to correspond to a large amount of data. A large amount of data set having a uniform data format is arranged in a plurality of databases. There is also a case that the data set is arranged not in a distributed manner, but in an overlapped manner on a plurality of databases. By arranging the data set in this manner, an improvement of throughput can be expected in a case that the number of simultaneous accesses to the same data is high.
A system of managing the data in such a parallel database is largely divided into three methods, that is, a system in which a plurality of servers do not share a disk (disk nonshared system), a system in which the servers share a disk (disk sharing system), and a system in which the servers share a disk and a memory (memory sharing system).
The disk nonshared system is mainly explained here. When the data set is divided into a plurality of databases and arranged, two methods of vertical division of data set and horizontal division of data set can be considered (fragmentation). The horizontal division of the data set is to create a subset of data set. A data partitioning technique described later becomes important. The vertical division of the data is to divide the data in a unit of attribute or column. Each division method includes a merit and demerit according to an individual access pattern. For example, in the vertical division of data, high speed can be acquired if data scanning of a size with few inquiries is good enough. However, if original data is required, data coupling is required between servers, and the performance is greatly deteriorated.
Each server used in the parallel database in the disk nonshared system can perform parallel access by individually accessing a plurality of databases in which the data set is arranged in the divided manner, and improvement of performance corresponding to the number of databases can be expected. Accordingly, processing efficiency and response time can be improved (partition parallelization).
As the data partitioning method, key range partitioning and hash partitioning are known. For example, it is assumed here that a large amount of data set is expressed with relation. In the key range partitioning and the hash partitioning, there are a case of using one column value of a table and a case of using a plurality of column values of the relation. When such data partitioning is performed, although loads are concentrated, in search with a range condition with respect to a target column, inefficiency caused by accessing an irrelevant database can be avoided. Further, in the search including natural coupling in the target column, coupling between different databases is not required, thereby enabling to considerably improve the performance.
In the parallel database, loads are concentrated on a specific database at the time of search, unless balanced data partitioning is performed, thereby making it difficult to exhibit a parallelization effect. However, respective data sizes may be unbalanced due to a change in the trend of input data, which cannot be avoided by using a predetermined data division rule. Therefore, improvement techniques such as dynamically changing the key range and changing the hash value have been proposed. With these techniques, however, the load due to data shift related to the change increases.
The parallel database often includes one coordinator server and a plurality of database (DB) servers. In such a configuration, following processing is performed in the parallel database. That is, the coordinator server having received a request from a client analyzes the request to generate a plan, and divides and distributes the plan to each of the DB servers. Each DB server executes the distributed plan and transmits data set of a processing result to the coordinator server. The coordinator server performs aggregation processing such as merge with respect to the transmitted data set, and transmits the aggregation result to the client. The data transferred between the servers is stream transmitted on a network such as a local area network (LAN). Therefore, in the parallel database, also the network is often realized on distributed parallel platforms such as interconnect between high-speed servers.
To realize high speed in the above processing, in the parallel database, a mechanism for performing phase processing such as scanning, sorting, and joining of internal processing of structured query language (SQL) in parallel by a plurality of processes and a plurality of servers is incorporated. In a part of database products, a pipeline system in which the process in each phase is operated independently, and before a previous phase process finishes, the next phase process is started has been adopted (pipeline parallelization).
With regard to the pipeline parallelization, for example, JP-A 2001-147847 (KOKAI) discloses a method in which the number of respective nodes is determined corresponding to database operation to be executed by each node constituting the parallel database system, and when there is a difference in division of data, the data is equally distributed to each node. According to the technique disclosed in JP-A 2001-147847 (KOKAI), because respective database operation to be executed by each node is parameterized, to equalize the expected processing time, there is no deviation in the processing time between respective nodes, and smooth operation can be realized in the pipeline processing.
However, the technique described in JP-A 2001-147847 (KOKAI) is for equalizing central processing unit (CPU) processing other than disk input/output (I/O) processing such as sort and merge in the parallel database by distributing the CPU processing to a plurality of nodes. Therefore, there can be a problem described below in the pipeline processing such as fetch associated with a data acquisition request from the client. That is, when the processing performed by a coordinator server cannot catch up with the processing of the DB server, the data set can be accumulated on the coordinator server side, thereby putting pressure on resources such as a memory of the coordinator server.